package ru.study.designpatterns.factoryMethod;

class Rubric {
	private long id;
	
	public Rubric(long id) {
		this.id=id;
	}
	public long getId() {
		return id;
	}
}

interface RubricDAO {
	public Rubric get(long id); 
}

class RubricFactory {
	public static RubricDAO getRubricDAO() {
		return  new	RubricDAOOracle();//1 если надо сменить
	}
}

class RubricDAOMySQL implements RubricDAO {

	@Override
	public Rubric get(long id) {		
		//получить коннект к mysql
		//написать специфический для mysql SQL запрос 
		return new Rubric(id);
	}	
}

class RubricDAOOracle implements RubricDAO {

	@Override 
	public Rubric get(long id) {		
		//получить коннект к oracle
		//написать специфический для oracle SQL запрос 
		return new Rubric(id);
	}	
}


public class Client {

	public static void main(String[] args) {
		//RubricDAOOracle  rdora = new RubricDAOOracle(); 
		// если бы было реализовано только на RubricDAOOracle (тк он один, то не было бы и интерфейса),
		// то при переезде на другую БД пришлось бы во всем коде менять RubricDAOOracle  
		//на RubricDAOЬMySQL, а так достаточно сменить лишь в строке //1
		RubricDAO rd = RubricFactory.getRubricDAO();
		Rubric r  = rd.get(5);
		System.out.println(r.getId()+" "+rd.getClass().getSimpleName());
		

	}

}
